本系列文之後也會置於個人網站
在「快速開始」的單元中,實際上已經完成了所有身份識別、身份驗證、授權和一些存取控制的流程。
在今天,將會來說說,這些看是相同,卻又有一些不同的名詞。
那麼首先,就先來認識各個名詞的英文吧!
名詞 | 英文 | 簡短說明 |
---|---|---|
身份識別 | Identification | 讓系統知道你是誰 |
身份驗證 | Authentication | 讓系統相信你是誰 |
授權 | Authorization | 允許他人存取某項資源 |
存取控制 | Access Control | 檢驗是否有資格存取某項資源 |
而我認爲軟體開發上,最重要的是 存取控制 。這直接關係到系統上的資源,但卻無法只存在存取控制,勢必需要身份驗證與授權的配合。這也是爲什麼我們很難將這些分開來看。
現在,讓我們把視線重新放回剛弄好的「快速開始」。在這個範例中,已經多少碰觸到了每一塊的概念。首先是身份識別:
要讓系統知道你是誰,就必須告訴他。在我們一開使「輸入帳號」的時候,其實就是在做這件事情。
然後,你得證明說,你是你聲稱的那個人。這個部分也就是主要確定「你」是誰的活動。爲了達成這個目的,需要知道除了系統外,只有你才知道的資訊(或只有你才擁有的)。
最常見的辨識方式就是「密碼」,此外,近來的生物識別,包含指紋辨識、Face Id、虹膜辨識等,都是在驗證身份。
授權控制,英文Authorization,和身份驗證的英文很像。
指的是將某個權限(permission)授予給某人(或某隻程式)的活動。
特別注意的是,授予對象不只限於「自然人」,還包含機器人或應用程式。是我認為最容易搞混的部份。
是的,我們當時要授權的對象,是我們所建立的Client,也就是剛開發完的那個極爲簡單的Web App。還記得你同意過他存取Profile
、Email
等資訊嗎?
最後,雖然我們並不是做控制的部分,但我們所開發的Web App確實在做存取資源的部分。這也是在最後的畫面,我們可以看到是誰登入的原因:
簡單來說,這整個過程:
在決定了 某人(誰) 對於 某項資源 是否有 某種操做的權限。這大概也是這個系列會探討最多的部分。